package interpreter_pattern.ex2;

import java.util.StringTokenizer;

/**
 * @author 申书航
 * @version 1.0
 * 表示终端表达式的类
 */
public class TerminalExpression extends Expression {

    private final String innerStr;

    /**
     * 构造函数，初始化终端表达式的字符串
     *
     * @param innerStr 终端表达式的字符串
     */
    public TerminalExpression(String innerStr) {
        this.innerStr = innerStr;
    }

    /**
     * 解释方法，检查给定的上下文中是否包含终端表达式的字符串
     *
     * @param ctx 上下文字符串
     * @return 如果上下文中包含终端表达式的字符串，返回true；否则返回false
     */
    @Override
    public boolean interpret(String ctx) {
        StringTokenizer st = new StringTokenizer(ctx);
        while (st.hasMoreTokens()) {
            String token = st.nextToken();
            if (token.equals(innerStr)) {
                return true;
            }
        }
        return false;
    }
}

